package com.jh.fcsm.beans.sys;

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.jh.fcsm.common.StringFWBXssDeserializer;
import com.jh.fcsm.common.StringNoDeserializer;
import com.jh.fcsm.common.annotation.DecryptField;
import com.jh.fcsm.common.annotation.EncryptField;
import com.jh.fcsm.enums.DesTypeEnum;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.jh.fcsm.common.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.apache.ibatis.type.JdbcType;
import tk.mybatis.mapper.annotation.ColumnType;
import javax.persistence.*;

/**
 * 数据源对象 sys_datasource
 
 * 
 * @author linq
 * @date 2023-08-11
 */
@Table(name = "sys_datasource")
@ApiModel(value = "com.jh.fcsm.beans.sys.SysDatasource", description = "数据源")
public class SysDatasource extends BaseEntity{
    private static final long serialVersionUID = 1L;

	@Column(name = "DATA_NAME")
    @ColumnType(jdbcType = JdbcType.VARCHAR)
    @ApiModelProperty(value="数据源名称")
	private String dataName;
	@Column(name = "REMARK")
    @ColumnType(jdbcType = JdbcType.VARCHAR)
    @ApiModelProperty(value="备注信息")
	private String remark;
	@Column(name = "DATA_TYPE_NAME")
    @ColumnType(jdbcType = JdbcType.VARCHAR)
    @ApiModelProperty(value="数据源类型")
	private String dataTypeName;
	@Column(name = "DATA_TYPE_CODE")
    @ColumnType(jdbcType = JdbcType.VARCHAR)
    @ApiModelProperty(value="数据源类型编码")
	private String dataTypeCode;
	@Column(name = "DEFAULT_FLAG")
    @ColumnType(jdbcType = JdbcType.INTEGER)
    @ApiModelProperty(value="1默认数据源，全表有且只有一个")
	private Integer defaultFlag;
	@Column(name = "DATA_URL")
    @ColumnType(jdbcType = JdbcType.VARCHAR)
    @ApiModelProperty(value="数据源地址 加密存储")
    @EncryptField
    @DecryptField(desType = DesTypeEnum.NO)
    @JsonDeserialize(using = StringNoDeserializer.class)
	private String dataUrl;
	@Column(name = "DATA_USERNAME")
    @ColumnType(jdbcType = JdbcType.VARCHAR)
    @ApiModelProperty(value="数据库用户名 加密存储 脱敏显示")
    @EncryptField
    @DecryptField
	private String dataUsername;
	@Column(name = "DATA_PWD")
    @ColumnType(jdbcType = JdbcType.VARCHAR)
    @ApiModelProperty(value="数据库密码 加密存储")
    @EncryptField
    @DecryptField(desType = DesTypeEnum.PASSWORD)
    @JsonDeserialize(using = StringNoDeserializer.class)
	private String dataPwd;
	@Column(name = "DATA_MIN")
    @ColumnType(jdbcType = JdbcType.INTEGER)
    @ApiModelProperty(value="最小数据源连接")
	private Integer dataMin;
	@Column(name = "DATA_MAX")
    @ColumnType(jdbcType = JdbcType.INTEGER)
    @ApiModelProperty(value="最大数据源连接")
	private Integer dataMax;

    /**
     * SET 数据源名称
     * @param dataName
     */
    public void setDataName(String dataName){
		this.dataName = dataName == null ? null :dataName;
	}
    /**
     * GET 数据源名称
     * @return dataName
     */
    public String getDataName(){
        return dataName;
    }
    /**
     * SET 备注信息
     * @param remark
     */
    public void setRemark(String remark){
		this.remark = remark == null ? null :remark;
	}
    /**
     * GET 备注信息
     * @return remark
     */
    public String getRemark(){
        return remark;
    }
    /**
     * SET 数据源类型
     * @param dataTypeName
     */
    public void setDataTypeName(String dataTypeName){
		this.dataTypeName = dataTypeName == null ? null :dataTypeName;
	}
    /**
     * GET 数据源类型
     * @return dataTypeName
     */
    public String getDataTypeName(){
        return dataTypeName;
    }
    /**
     * SET 数据源类型编码
     * @param dataTypeCode
     */
    public void setDataTypeCode(String dataTypeCode){
		this.dataTypeCode = dataTypeCode == null ? null :dataTypeCode;
	}
    /**
     * GET 数据源类型编码
     * @return dataTypeCode
     */
    public String getDataTypeCode(){
        return dataTypeCode;
    }
    /**
     * SET 1默认数据源，全表有且只有一个
     * @param defaultFlag
     */
    public void setDefaultFlag(Integer defaultFlag){
		this.defaultFlag = defaultFlag;
	}
    /**
     * GET 1默认数据源，全表有且只有一个
     * @return defaultFlag
     */
    public Integer getDefaultFlag(){
        return defaultFlag;
    }
    /**
     * SET 数据源地址 加密存储
     * @param dataUrl
     */
    public void setDataUrl(String dataUrl){
		this.dataUrl = dataUrl == null ? null :dataUrl;
	}
    /**
     * GET 数据源地址 加密存储
     * @return dataUrl
     */
    public String getDataUrl(){
        return dataUrl;
    }
    /**
     * SET 数据库用户名 加密存储 脱敏显示
     * @param dataUsername
     */
    public void setDataUsername(String dataUsername){
		this.dataUsername = dataUsername == null ? null :dataUsername;
	}
    /**
     * GET 数据库用户名 加密存储 脱敏显示
     * @return dataUsername
     */
    public String getDataUsername(){
        return dataUsername;
    }
    /**
     * SET 数据库密码 加密存储 脱敏显示
     * @param dataPwd
     */
    public void setDataPwd(String dataPwd){
		this.dataPwd = dataPwd == null ? null :dataPwd;
	}
    /**
     * GET 数据库密码 加密存储 脱敏显示
     * @return dataPwd
     */
    public String getDataPwd(){
        return dataPwd;
    }
    /**
     * SET 最小数据源连接
     * @param dataMin
     */
    public void setDataMin(Integer dataMin){
		this.dataMin = dataMin;
	}
    /**
     * GET 最小数据源连接
     * @return dataMin
     */
    public Integer getDataMin(){
        return dataMin;
    }
    /**
     * SET 最大数据源连接
     * @param dataMax
     */
    public void setDataMax(Integer dataMax){
		this.dataMax = dataMax;
	}
    /**
     * GET 最大数据源连接
     * @return dataMax
     */
    public Integer getDataMax(){
        return dataMax;
    }
    @Override
	public String toString() {
	    return  ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
	}
}
